| 1234567891011121314151617181920212223 |
- import { useEffect } from 'react';
- import { useRouter } from 'next/router';
- import { useSetAtom } from 'jotai';
- import { _atomsForSyncRevisionIdFromUrl } from '~/states/page';
- const { revisionIdFromUrlAtom } = _atomsForSyncRevisionIdFromUrl;
- /**
- * Sync URL query parameter (revisionId) to Jotai atom
- * This hook should be called in the main page component to keep the atom in sync with the URL
- */
- export const useSyncRevisionIdFromUrl = (): void => {
- const router = useRouter();
- const setRevisionIdFromUrl = useSetAtom(revisionIdFromUrlAtom);
- useEffect(() => {
- const revisionId = router.query.revisionId;
- setRevisionIdFromUrl(
- typeof revisionId === 'string' ? revisionId : undefined,
- );
- }, [router.query.revisionId, setRevisionIdFromUrl]);
- };
|